<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
    <head>
        <th:block th:include="include :: header('修改角色')"/>
        <th:block th:include="include :: ztree-css"/>
    </head>
    <body class="white-bg">
        <div class="wrapper wrapper-content animated fadeInRight ibox-content">
            <form class="form-horizontal m" id="form-role-edit" th:object="${role}">
                <input id="roleId" name="roleId" type="hidden" th:field="*{roleId}"/>
                <div class="form-group">
                    <label class="col-sm-3 control-label is-required">角色名称：</label>
                    <div class="col-sm-8">
                        <input class="form-control" type="text" name="roleName" id="roleName" th:field="*{roleName}" required>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label is-required">权限字符：</label>
                    <div class="col-sm-8">
                        <input class="form-control" type="text" name="roleKey" id="roleKey" th:field="*{roleKey}" required>
                        <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 控制器中定义的权限字符，如：@RequiresRoles("")</span>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label is-required">上级角色：</label>
                    <div class="col-sm-8">
                        <select name="sysRole.id" id="sysRoleName" class="form-control" required>
                            <option value="0">顶级</option>
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label is-required">显示顺序：</label>
                    <div class="col-sm-8">
                        <input class="form-control" type="text" name="roleSort" id="roleSort" th:field="*{roleSort}" required>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">状态：</label>
                    <div class="col-sm-8">
                        <label class="toggle-switch switch-solid">
                            <input type="checkbox" id="status" th:checked="${role.status == '0' ? true : false}">
                            <span></span>
                        </label>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">备注：</label>
                    <div class="col-sm-8">
                        <input id="remark" name="remark" class="form-control" type="text" th:field="*{remark}">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">菜单权限</label>
                    <div class="col-sm-8">
                        <div id="menuTrees" class="ztree"></div>
                    </div>
                </div>
            </form>
        </div>
        <th:block th:include="include :: footer"/>
        <th:block th:include="include :: ztree-js"/>
        <script th:inline="javascript">
            $(function () {
                var url = ctx + "system/menu/roleMenuTreeData?roleId=" + $("#roleId").val();
                var options = {
                    id: "menuTrees",
                    url: url,
                    check: {enable: true},
                    expandLevel: 0
                };
                $.tree.init(options);


                /*渲染下拉框*/
                $.ajax({
                    url: "/system/role/list",
                    type: 'POST',
                    dataType: 'json',
                    success: function (data) {
                        var select = $("#sysRoleName");
                        var sysRoleId = [[${role.sysRole.roleId}]];
                        for (let i = 0; i < data.rows.length; i++) {
                            if (data.rows[i].roleId == roleId) {
                                continue;
                            }
                            if (sysRoleId == data.rows[i].roleId) {
                                select.append("<option value='" + data.rows[i].roleId + "' selected>" + data.rows[i].roleName + "</option>");
                                continue;
                            }
                            select.append("<option value='" + data.rows[i].roleId + "'>" + data.rows[i].roleName + "</option>")
                        }
                    }
                });


            });

            $("#form-role-edit").validate({
                onkeyup: false,
                rules: {
                    roleName: {
                        remote: {
                            url: ctx + "system/role/checkRoleNameUnique",
                            type: "post",
                            dataType: "json",
                            data: {
                                "roleId": function () {
                                    return $("#roleId").val();
                                },
                                "roleName": function () {
                                    return $.common.trim($("#roleName").val());
                                }
                            },
                            dataFilter: function (data, type) {
                                return $.validate.unique(data);
                            }
                        }
                    },
                    roleKey: {
                        remote: {
                            url: ctx + "system/role/checkRoleKeyUnique",
                            type: "post",
                            dataType: "json",
                            data: {
                                "roleId": function () {
                                    return $("#roleId").val();
                                },
                                "roleKey": function () {
                                    return $.common.trim($("#roleKey").val());
                                }
                            },
                            dataFilter: function (data, type) {
                                return $.validate.unique(data);
                            }
                        }
                    },
                    roleSort: {
                        digits: true
                    },
                },
                messages: {
                    "roleName": {
                        remote: "角色名称已经存在"
                    },
                    "roleKey": {
                        remote: "角色权限已经存在"
                    }
                },
                focusCleanup: true
            });

            function edit() {
                var roleId = $("input[name='roleId']").val();
                var roleName = $("input[name='roleName']").val();
                var roleKey = $("input[name='roleKey']").val();
                var roleSort = $("input[name='roleSort']").val();
                var status = $("input[id='status']").is(':checked') == true ? 0 : 1;
                var remark = $("input[name='remark']").val();
                var pid = $("#sysRoleName").val();
                var menuIds = $.tree.getCheckedNodes();
                $.ajax({
                    cache: true,
                    type: "POST",
                    url: ctx + "system/role/edit",
                    data: {
                        "roleId": roleId,
                        "roleName": roleName,
                        "roleKey": roleKey,
                        "roleSort": roleSort,
                        "status": status,
                        "remark": remark,
                        "menuIds": menuIds,
                        "sysRole.roleId": pid
                    },
                    async: false,
                    error: function (request) {
                        $.modal.alertError("系统错误");
                    },
                    success: function (data) {
                        $.operate.successCallback(data);
                    }
                });
            }

            function submitHandler() {
                if ($.validate.form()) {
                    edit();
                }
            }
        </script>
    </body>
</html>
